// pages/user/feedback/index.js
const apiService = require('../../../utils/api.js');
const auth = require('../../../utils/auth.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		feedbackText: '', // 反馈内容
		inputFocus: true, // 输入框聚焦状态
		isSubmitting: false, // 提交状态
		statusBarHeight: 44 // 系统状态栏高度
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		// 获取系统信息
		this.getSystemInfo();
		
		// 检查登录状态
		this.checkLoginStatus();
	},

	/**
	 * 获取系统信息
	 */
	getSystemInfo() {
		const systemInfo = wx.getSystemInfoSync();
		this.setData({
			statusBarHeight: systemInfo.statusBarHeight || 44
		});
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		wx.navigateBack({
			delta: 1,
			success: () => {
				console.log('返回上一页成功');
			},
			fail: (error) => {
				console.error('返回上一页失败:', error);
				// 降级处理：跳转到首页
				wx.switchTab({
					url: '/pages/home/index/index'
				});
			}
		});
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 检查登录状态
	 */
	checkLoginStatus() {
		if (!auth.checkLoginStatus()) {
			// 未登录，显示提示并跳转到登录页
			wx.showModal({
				title: '请先登录',
				content: '提交反馈需要先登录账号',
				confirmText: '去登录',
				cancelText: '返回',
				success: (res) => {
					if (res.confirm) {
						auth.requireLogin('/pages/user/feedback/index');
					} else {
						wx.navigateBack({
							delta: 1,
							fail: () => {
								wx.switchTab({
									url: '/pages/home/index/index'
								});
							}
						});
					}
				}
			});
			return false;
		}
		return true;
	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	async onShow() {
		// 验证登录状态
		const isLoggedIn = await auth.validateLoginStatus();
		if (isLoggedIn) {
			// 页面显示时自动聚焦输入框
			this.setData({
				inputFocus: true
			});
		} else {
			// 登录状态失效，重新检查
			this.checkLoginStatus();
		}
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 输入框内容变化处理
	 */
	onInputChange(e) {
		const value = e.detail.value;
		this.setData({
			feedbackText: value
		});
	},

	/**
	 * 提交反馈
	 */
	async onSubmit() {
		const { feedbackText, isSubmitting } = this.data;
		
		// 检查是否为空或正在提交中
		if (!feedbackText.trim() || isSubmitting) {
			return;
		}
		
		// 验证登录状态
		if (!auth.checkLoginStatus()) {
			wx.showModal({
				title: '登录已过期',
				content: '请重新登录后再试',
				confirmText: '去登录',
				success: (res) => {
					if (res.confirm) {
						auth.requireLogin('/pages/user/feedback/index');
					}
				}
			});
			return;
		}

		// 设置提交状态
		this.setData({
			isSubmitting: true
		});

		try {
			// 显示加载提示
			wx.showLoading({
				title: '提交中...',
				mask: true
			});

			// TODO: 这里应该调用实际的API接口提交反馈
			// 模拟网络请求
			await this.submitFeedback(feedbackText);

			// 隐藏加载提示
			wx.hideLoading();

			// 显示成功提示
			wx.showToast({
				title: '感谢您的反馈！',
				icon: 'success',
				duration: 2000
			});

			// 清空输入框
			this.setData({
				feedbackText: '',
				isSubmitting: false
			});

			// 延迟返回上一页
			setTimeout(() => {
				wx.navigateBack();
			}, 2000);

		} catch (error) {
			// 隐藏加载提示
			wx.hideLoading();
			
			// 显示失败提示
			wx.showToast({
				title: '提交失败，请稍后重试',
				icon: 'none',
				duration: 2000
			});

			// 重置提交状态
			this.setData({
				isSubmitting: false
			});
		}
	},

	/**
	 * 提交反馈到服务器
	 * @param {string} content 反馈内容
	 */
	async submitFeedback(content) {
		try {
			const result = await apiService.submitFeedback({
				content: content,
				timestamp: Date.now()
			});
			
			if (result.success) {
				return result;
			} else {
				throw new Error(result.message);
			}
			
		} catch (error) {
			console.error('提交反馈失败:', error);
			throw error;
		}
	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {
		// 停止下拉刷新
		wx.stopPullDownRefresh();
	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {
		return {
			title: 'PowerPet - 意见反馈',
			path: '/pages/user/feedback/index'
		};
	}
})